package stockscreener.negocio;

import java.util.ArrayList;
import java.util.Collection;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;

import org.hibernate.annotations.GenericGenerator;

@Entity
public class Empresa {

	private Long id;
	private String nomeDePregao;
	private Setor setor;
	private Long codigoCVM;
	private String razaoSocial;
	private Long quantidadeTotalDeAcoes;
	private Collection<Acao> acoes;
//	private Collection<BalancoPatrimonial> balancos;
	
	@Id
	@GeneratedValue(generator = "increment")
	@GenericGenerator(name = "increment", strategy = "increment")
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNomeDePregao() {
		return nomeDePregao;
	}
	public void setNomeDePregao(String nomeDePregao) {
		this.nomeDePregao = nomeDePregao;
	}
	public Setor getSetor() {
		return setor;
	}
	public void setSetor(Setor setor) {
		this.setor = setor;
	}

	public Long getCodigoCVM() {
		return codigoCVM;
	}
	public void setCodigoCVM(Long codigoCVM) {
		this.codigoCVM = codigoCVM;
	}

	public Long getQuantidadeTotalDeAcoes() {
		return quantidadeTotalDeAcoes;
	}
	public void setQuantidadeTotalDeAcoes(Long quantidadeTotalDeAcoes) {
		this.quantidadeTotalDeAcoes = quantidadeTotalDeAcoes;
	}
	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	@JoinColumn(name="empresa_id")
	public Collection<Acao> getAcoes() {
		return acoes;
	}
	public void setAcoes(Collection<Acao> acoes) {
		this.acoes = acoes;
	}
	public void setRazaoSocial(String razaoSocial) {
		this.razaoSocial = razaoSocial;
	}
	
	public String getRazaoSocial() {
		return this.razaoSocial;
	}
	
	public void adicionarAcao(Acao acao) {
		if (acoes == null) {
			acoes = new ArrayList<Acao>();
		}
		
		acoes.add(acao);
	}

//	@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY)
//	@JoinColumn(name="empresa_id")
//	public Collection<BalancoPatrimonial> getBalancos() {
//		return balancos;
//	}
//	public void setBalancos(Collection<BalancoPatrimonial> balancos) {
//		this.balancos = balancos;
//	}
//	public void adicionaBalanco(BalancoPatrimonial bp) {
//		if (balancos == null) {
//			balancos = new ArrayList<BalancoPatrimonial>();
//		}
//		
//		balancos.add(bp);
//	}
}
